<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<script type = "text/javascript">
    /*
    * 代理模式：
    *   代理模式为一个对象提供一个代用品或者占位符，以便控制对他的访问。
    *   代理模式的关键是，当客户不方便直接访问一个对象或者不满足需求时，提供一个替身对象来控制这个对象的访问，客户实际上访问的是替身对象，
    *   替身对象对请求做一些处理之后，把请求转发给本体对象。
    *
    * */

    function DaGongRen(name){ //本体对象
        this.name = name
    }
    DaGongRen.prototype = {
        sfh:function (){
            console.log(this.name + "手法好!")
        },
        happyWithWomen:function (){
            console.log(this.name + "很讨喜!")
        },
    }

    //激活本体对象
    var maomao = new DaGongRen("maomao")
    var yaoyao = new DaGongRen("yaoyao")

    function ProxyRemi(user){ //代理人
        this.user = user
    }
    ProxyRemi.prototype = {
        sfh:function (){
            this.user.sfh()
        },
        happyWithWomen:function (){
            this.user.happyWithWomen()
        }
    }

    //激活代理人
    var bxml = new ProxyRemi(maomao)
    bxml.sfh()

    var yy = new ProxyRemi(yaoyao)
    yy.happyWithWomen()

</script>
</body>
</html>